package com.itheima.ydd.controller;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.itheima.ydd.common.R;
import com.itheima.ydd.dto.PageDto;
import com.itheima.ydd.entity.YddTag;
import com.itheima.ydd.service.YddTagService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * @author JavaClimber
 * @version 1.0
 * @date 2022/4/9 0009 zihao
 */
@Slf4j
@RestController
@RequestMapping("/ydd_tag")
public class YddTagController {

    @Autowired
    private YddTagService yddTagService;

    //根据实体类修改
    @PostMapping("/update")
    public R<String> update(@RequestBody YddTag yddTag) {
        log.info("正在修改" + yddTag.getTagname());
        //判断非空,如果接收到的id不是空的,就返回正确的值
        String Tagname = yddTag.getTagname();
        if (StringUtils.isNotEmpty(Tagname)) {

            boolean b = yddTagService.updateById(yddTag);
            //如果删除成功就返回
            if (b) {
                return R.success("修改成功");
            } else {
                return R.error("修改失败");
            }
        }
        return R.error("id为空");
    }


    //根据实体类添加
    @PostMapping("/add")
    public R<String> add(@RequestBody YddTag yddTag) {
        log.info("正在添加" + yddTag);
        yddTag.setDefault_data("1");
        boolean b = yddTagService.save(yddTag);
        if (b) {
            return R.success("添加成功");
        } else {
            return R.error("添加失败");
        }
    }


    //查询所有
    @GetMapping("/all")
    public R<List<YddTag>> all() {
        log.info("正在查找分类所有");
        List<YddTag> list = yddTagService.list();
        return R.success(list);
    }

    //根据id查询(标签修改)
    @GetMapping("/rowInfo")
    public R<YddTag> rowInfo(String id) {
        log.info("根据id查询分类");
        //设置条件构造器
        LambdaQueryWrapper<YddTag> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        //判断非空,如果接收到的id不是空的,就返回正确的值
        if (StringUtils.isNotEmpty(id)) {
            lambdaQueryWrapper.eq(YddTag::getId, id);
            YddTag yddTag = yddTagService.getById(id);
            return R.success(yddTag);
        }
        return R.error("id为空");
    }

    //分页查询,条件查询
    @GetMapping("/list")
    public R<PageDto<YddTag>> page(String tagname, String page, String limit, HttpServletRequest request) {
        String headerToken = request.getHeader("x-token");//获取到token,不知道暂时能干啥
        log.info("正在执行查询分类");
        //页码
        long pageLong = Long.parseLong(page);
        //  每页数量
        long limitLong = Long.parseLong(limit);

        //设置一个分页
        PageDto<YddTag> pageInfo = new PageDto<>(pageLong, limitLong);
        //设置条件构造器
        LambdaQueryWrapper<YddTag> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        //设置非空过滤条件
        lambdaQueryWrapper.like(StringUtils.isNotEmpty(tagname), YddTag::getTagname, tagname);
        //添加排序条件
        lambdaQueryWrapper.orderByAsc(YddTag::getId);
        //执行查询
        yddTagService.page(pageInfo, lambdaQueryWrapper);

        return R.success(pageInfo);
    }

    //根据id删除
    @GetMapping("/del")
    public R<String> del(String id) {
        log.info("正在根据id删除");
        //设置条件构造器
        LambdaQueryWrapper<YddTag> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        //判断非空,如果接收到的id不是空的,就返回正确的值
        if (StringUtils.isNotEmpty(id)) {
            lambdaQueryWrapper.eq(YddTag::getId, id);
            boolean b = yddTagService.removeById(id);
            //如果删除成功就返回
            if (b) {
                return R.success("删除成功");
            } else {
                return R.error("删除失败");
            }
        }
        return R.error("id为空");
    }

}
